package com.cskaoyan.javase.oop1._10static._5notice;

/**
 * 注意事项
 * 1. 一个类中，静态方法无法直接调用非静态的方法和属性，也不能使用this，super关键字（super后面会讲）
 *    - **经典错误：Non-static field/method xxx cannot be referenced from a static context**
 *    - 原因：静态方法调用的时候，完全有可能没有对象，没有对象普通成员就无法访问
 *
 * 2. 普通成员方法当中，是可以访问静态成员的
 *    - 显然，既然对象都存在了，类加载一定进行了，所以这种访问是完全可行的
 *    - 建议采用这种访问形式的时候，使用类名.变量名的形式访问，以示区别，增加代码可读性
 *
 * 3. 只存在静态成员变量，不存在“静态局部变量”，包括静态方法中也没有“静态局部变量”
 *
 * 4. 静态成员变量不建议用构造方法赋值（因为这种赋值依赖于创建对象，不合适）
 *
 * 5. 普遍来说，访问静态成员，都建议加上类名去访问，提升代码可读性
 *
 * @since 16:23
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    int b = 10;

    public static void main(String[] args) {
        Student stu = new Student(18, "张三", "华中科技大学");
        System.out.println(Student.school);
    }
}

class Student {
    int age;
    String name;
    static String school = "武汉大学";

    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Student(int age, String name, String school) {
        this.age = age;
        this.name = name;
        Student.school = school;
    }

    public Student() {
    }
}
